
package bd;
import classes.*;
import java.util.*;
import java.sql.*;
import javax.swing.JOptionPane;

public class CidadeBD {
    public static boolean salvar(Cidade cidade,Usuario usuarioLogado){
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_CIDADE(NULL,?,?,?,NULL,?)}");
            //procedure.setInt(1, (Integer)null);
            procedure.setString(1, cidade.getDescr());
            JOptionPane.showMessageDialog(null,"CID DESCR"+cidade.getDescr());
            procedure.setString(2, cidade.getEstado().getSigla());
            JOptionPane.showMessageDialog(null,"EST SIGLA"+cidade.getEstado().getSigla());
            procedure.setInt(3, usuarioLogado.getId());
            JOptionPane.showMessageDialog(null,"USR LOGADO"+usuarioLogado.getId());
            //procedure.setInt(5, (Integer)null);
            procedure.setString(4,"IN");
            procedure.execute();
            procedure.close();
            conexao.close();

            return true;

        }catch(Exception excecao){
            return false;
        }

    }

    public static boolean alterar(Cidade cidade,Usuario usuarioLogado){
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_CIDADE(?,?,?,NULL,?,?)}");
            procedure.setInt(1, cidade.getId());
            procedure.setString(2, cidade.getDescr());
            procedure.setString(3, cidade.getEstado().getSigla());
            //procedure.setInt(4, (Integer)null);
            procedure.setInt(4, usuarioLogado.getId());
            procedure.setString(5,"AL");
            procedure.execute();
            procedure.close();
            conexao.close();

            return true;

        }catch(Exception excecao){
            return false;
        }

    }

    public static boolean deletar(int codigo){
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_CIDADE(?,NULL,NULL,NULL,NULL,?)}");
            procedure.setInt(1, codigo);
            //procedure.setString(2, null);
            //procedure.setString(3, null);
            //procedure.setInt(4, (Integer)null);
            //procedure.setInt(5, (Integer)null);
            procedure.setString(2,"");
            procedure.execute();
            procedure.close();
            conexao.close();

            return true;
        }catch(Exception excecao){
            return false;
        }
    }

    public static ArrayList<Cidade> pesquisar(String cidade) {
        ArrayList<Cidade> vetCidades = new ArrayList<Cidade>();
        try {
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONACIDADE where cid_descr='"+cidade+"'");
            while (resultado.next()) {
                Cidade novaCidade = new Cidade();
                novaCidade.setId(resultado.getInt("cid_id"));
                novaCidade.setDescr(resultado.getString("cid_descr"));
                novaCidade.setEstado(EstadoBD.selecionar(resultado.getString("est_sigla")));
                vetCidades.add(novaCidade);
            }
            conexao.close();
            return vetCidades;
        } catch (Exception excecao) {
            return null;
        }
    }


    public static Cidade selecionar(int codigo){
        Cidade retorno;
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONACIDADE where cid_id="+codigo+"");
            if(resultado.next())
            {
                Cidade novaCidade = new Cidade();
                novaCidade.setId(codigo);
                novaCidade.setDescr(resultado.getString("cid_descr"));
                novaCidade.setEstado(EstadoBD.selecionar(resultado.getString("est_sigla")));

                retorno=novaCidade;
            }else{
                retorno=null;
            }
            conexao.close();
            return retorno;
        }catch(Exception excecao){
            return null;
        }
    }

    public static ArrayList<Cidade> selecionar(){
        ArrayList<Cidade> vetCidades = new ArrayList<Cidade>();
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONACIDADE");
            while(resultado.next())
            {
                Cidade novaCidade = new Cidade();
                novaCidade.setId(resultado.getInt("cid_id"));
                novaCidade.setDescr(resultado.getString("cid_descr"));
                novaCidade.setEstado(EstadoBD.selecionar(resultado.getString("est_sigla")));
                vetCidades.add(novaCidade);
            }
            conexao.close();
            return vetCidades;
        }catch(Exception excecao){
            JOptionPane.showMessageDialog(null,"excecao.getMessage()");
            return null;
        }
    }

}
